package com.biodiv.miracle.support.utils;

import java.util.Arrays;
import java.util.List;

/**
 * @Author: tianquan
 * @CreateTime: 2025-05-28  23:07
 * @Description: 类工具类
 */
public class ClassUtils {

    /**
     * 判断当前类是否与目标类或接口有关联。
     *
     * @param clazz                  当前类。
     * @param targetClassOrInterface 目标类或接口。
     * @return 如果当前类与目标类或接口有关联，则返回true，否则返回false。
     */
    public static boolean isRelatedTo(Class<?> clazz, Class<?> targetClassOrInterface) {
        if (clazz == null) {
            return false;
        }
        if (clazz.equals(targetClassOrInterface)) {
            return true;
        }
        List<Class<?>> interfaces = Arrays.asList(clazz.getInterfaces());
        for (Class<?> anInterface : interfaces) {
            if (isRelatedTo(anInterface, targetClassOrInterface)) {
                return true;
            }
        }
        return isRelatedTo(clazz.getSuperclass(), targetClassOrInterface);
    }

}
